package com.demo2do.fms.admin.service.supplier;

import java.util.List;

import com.demo2do.core.entity.page.Page;
import com.demo2do.fms.admin.entity.search.supplier.AbnormalCapacitySearch;
import com.demo2do.fms.admin.entity.security.Login;
import com.demo2do.fms.entity.vehicle.source.LockStatus;
import com.demo2do.fms.entity.vehicle.source.VehicleSource;
import com.demo2do.fms.entity.vehicle.source.VehicleSourceLockRecord;

/**
 * 
 * @author mohanlan
 *
 */
public interface VehicleLockService {
    
    /**
     * 
     * @param vehicleSource
     * @param operator
     * @param description
     */
    public void unlockVehicle(VehicleSource vehicleSource, Long operator, String description);
    
    /**
     * 
     * @param lockRecordId
     * @return
     */
    public VehicleSourceLockRecord loadLockRecord(Long lockRecordId);
    
    /**
     * 
     * @param login
     * @return
     */
    public int countLockRecord(Login login);

    /**
     * 
     * @param login
     * @param status
     * @return
     */
    public int countLockRecord(Login login, LockStatus status);
    
    /**
     * 
     * @param login
     * @param page
     * @return
     */
    public List<VehicleSourceLockRecord> listLockRecord(Login login, Page page);
    
    /**
     * 
     * @param login
     * @param status
     * @param page
     * @return
     */
    public List<VehicleSourceLockRecord> listLockRecord(Login login, LockStatus status, Page page);
    
    /**
     * @param search
     * @param login
     * @return
     */
    public int countLockRecord(AbnormalCapacitySearch search, Login login);
    
    /**
     * @param search
     * @param login
     * @param page
     * @return
     */
    public List<VehicleSourceLockRecord> searchLockRecord(AbnormalCapacitySearch search, Login login, Page page);
    
}
